﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace PluginAudioVideo
{
    public class PluginAudioVideo:Cataloger.Plugins.IPlugin
    {
        #region IPlugin Members
        public PluginAudioVideo()
        {
            rozszerzenia = new Dictionary<string, bool>();
            
            rozszerzenia.Add(".mat",false);
            rozszerzenia.Add(".pvf", false);
            rozszerzenia.Add(".xi", false);
            rozszerzenia.Add(".sds", false);
            rozszerzenia.Add(".avr", false);
            rozszerzenia.Add(".iff", false);
            rozszerzenia.Add(".paf", false);
            rozszerzenia.Add(".sd2", false);
            rozszerzenia.Add(".irca", false);
            rozszerzenia.Add(".w64", false);
            rozszerzenia.Add(".flac", false);
            rozszerzenia.Add(".dat", false);
            rozszerzenia.Add(".aiff", false);
            rozszerzenia.Add(".aifc", false);
            rozszerzenia.Add(".au", false);
            rozszerzenia.Add(".ifo", true);
            rozszerzenia.Add(".ac3", true);
            rozszerzenia.Add(".dts", true);
            rozszerzenia.Add(".aac", true);
            rozszerzenia.Add(".ape", true);
            rozszerzenia.Add(".mac", true);
            rozszerzenia.Add(".mkv", false);
            rozszerzenia.Add(".mka", false);
            rozszerzenia.Add(".mks", false);
            rozszerzenia.Add(".ogg", true);
            rozszerzenia.Add(".ogm", true);
            rozszerzenia.Add(".avi", true);
            rozszerzenia.Add(".wav", true);
            rozszerzenia.Add(".mpeg", true);
            rozszerzenia.Add(".mpg", true);
            rozszerzenia.Add(".vob", true);
            rozszerzenia.Add(".mp4", true);
            rozszerzenia.Add(".mpgv", false);
            rozszerzenia.Add(".mpv", false);
            rozszerzenia.Add(".m1v", false);
            rozszerzenia.Add(".m2v", false);
            rozszerzenia.Add(".mp2", false);
            rozszerzenia.Add(".mp3", true);
            rozszerzenia.Add(".asf", true);
            rozszerzenia.Add(".wma", true);
            rozszerzenia.Add(".wmv", true);
            rozszerzenia.Add(".qt", true);
            rozszerzenia.Add(".mov", true);
            rozszerzenia.Add(".rm", true);
            rozszerzenia.Add(".rmvb", true);
            rozszerzenia.Add(".ra", false);

        }
        public string Autor
        {
            get { return "Paweł Stasiak (polop56@o2.pl)"; }
        }

        public string Opis
        {
            get { return "Plugin pobiera opis z plików audio/video dotyczący informacji o kodekach i podstawowych parametrach danego pliku"; }
        }

        public string Wersja
        {
            get { return "1.0"; }
        }

        public string Nazwa
        {
            get { return "Plugin Audio Video"; }
        }

        public string OpisToolTip
        {
            get { throw new NotImplementedException(); }
        }

        public void Konfiguruj()
        {
            Form1 f1 = new Form1(Rozszerzenia);
            if (f1.ShowDialog() == DialogResult.OK)
            {
                foreach (KeyValuePair<string, bool> item in f1.pofiice)
                {
                    Rozszerzenia[item.Key] = item.Value;
                }
            }
        }
        public Dictionary<string, bool> rozszerzenia;
        public Dictionary<string, bool> Rozszerzenia
        {
            get 
            {
                return rozszerzenia;
            }
        }

        public bool UstawOpis(Cataloger.Plik p, System.IO.FileInfo path)
        {
            foreach (KeyValuePair<string, bool> item in Rozszerzenia)
            {
                if (item.Key == path.Extension.ToLower() && item.Value == true)
                {
                    MediaInfoLib.MediaInfo mi = new MediaInfoLib.MediaInfo();
                    mi.Open(path.FullName);
                    mi.Option("Complete");
                    p.Opis += mi.Inform();
                    mi.Close();
                    return true;
                    break;
                }
            }
            return false;
        }

        #endregion
    }
}
